package com.framework.service.yhbservice;

import com.baomidou.mybatisplus.service.IService;
import com.framework.yhbEntity.user.YhbUser;
import com.framework.yhbEntity.user.YhbUserOrder;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface YhbUserOrderService extends IService<YhbUserOrder> {
    /**
     * 新增订单
     * @param token
     * @param goodsId
     * @param goodsNumber
     * @param goodsPrice
     * @return
     */
    String addOrder(String token, Long goodsId, Integer goodsNumber, BigDecimal goodsPrice);

    /**
     * 插入订单
     * @param orderNo
     * @param goodsNumber
     * @param goodsPrice
     * @param user
     * @param addressId
     * @param goodsId
     */
    void insertOrders(String orderNo, Integer goodsNumber, BigDecimal goodsPrice, YhbUser user, String addressId, Long goodsId);

    /**
     * 订单列表
     * @param token
     * @param orderState
     * @param payState
     * @return
     */
    List<YhbUserOrder> queryOrdersList(String token, String orderState, String payState);

    /**
     * 物流信息
     * @param token
     * @param orderNo
     * @return
     */
    Map<String, Object> queryLogistics(String token, String orderNo);

    /**
     * 取消订单
     * @param token
     * @param orderNo
     */
    void cancelOrders(String token, String orderNo);

    /**
     * 签收
     * @param token
     * @param orderNo
     */
    void signOrders(String token, String orderNo);

    /**
     * 查询订单信息
     * @param token
     * @param orderNo
     * @return
     */
    Map<String, Object> queryOrderInfo(String token, String orderNo);

    /**
     * 修改状态
     * @param orderNo
     * @param aliPayType
     */
    void successPayState(String orderNo, String aliPayType);

    String pay(String token, String body, String subject, String orderNo, BigDecimal totalAmount, Integer payType, String password);

    String addOrderByphone(String phone, Long goodsId, Integer goodsNumber, BigDecimal goodsPrice);

    /**
     * 添加订单
     * @param orderNo
     * @param goodsNumber
     * @param goodsPrice
     * @param phone
     * @param addressId
     * @param goodsId
     * @param deptId
     */
    void insertOrders(String orderNo, Integer goodsNumber, BigDecimal goodsPrice, String phone, String addressId, Long goodsId, Long deptId);

    /**
     * 通过手机查询订单
     * @param phone
     * @param orderNo
     * @return
     */
    Map<String, Object> queryOrderInfoByPhone(String phone, String orderNo);

    /**
     * 通过手机支付
     * @param deptId
     * @param body
     * @param subject
     * @param orderNo
     * @param totalAmount
     * @param payType
     * @param phone
     * @return
     */
    String payByPhone(Long deptId, String body, String subject, String orderNo, BigDecimal totalAmount, Integer payType, String phone);

    /**
     * 修改订单地址
     * @param orderNo
     * @param addressId
     * @param token
     * @return
     */
    Boolean updateOrdersAddress(String orderNo, String addressId, String token);

    /**
     * 通过订单号查询
     * @param orderNo
     * @return
     */
    YhbUserOrder queryOrderByOrderNo(String orderNo);

    void addOrder(String userId, String sn, Integer activityId, String orderNo, BigDecimal payAmount);
}
